#ifndef DISPLAY_LIST_H_
#define DISPLAY_LIST_H_

class DisplayList {
    private:
        const int id;
        const bool valido;
        bool inicializado;

    public:
        DisplayList();
        virtual ~DisplayList();

        /*
         * Inicializa la lista almacenando en ella las intrucciones
         * del metodo "ejecucion".
         *
         * No esta permitido inicializar mas de una vez una lista.
         */
        void inicializar();

        /*
         * Metodo para ser implementado con las intrucciones de dibujado
         * deseadas.
         */
        virtual void ejecucion() const = 0;

        /*
         * Dibuja el contenido de la lista independientemente si esta
         * es valida o no. Como desventaja, la listas invalidas no 
         * ganaran ninguna mejora en la ejecucion.
         *
         * Debe haberse inicializado previamente.
         */
        virtual void dibujar() const;

        /*
         * Determina si la lista es valida o no.
         * Una lista invalida puede ser dibujada pero sin ganar ninguna
         * mejora en la ejecucion.
         */
        bool esValido() const;

};

#endif
